package com.dc.designPattern._6_bridge.impl;

/**
 * Description: 桥接模式，品牌和样式可以随意组合
 *
 * 传统方案解决手机操作问题分析
 *    1) 扩展性问题(类爆炸)，如果我们再增加手机的样式(旋转式)，就需要增加各个品牌手机的类，
 *        同样如果我们增加一个手机品牌，也要在各个手机样式类下增加。
 *    2) 违反了单一职责原则，当我们增加手机样式时，要同时增加所有品牌的手机，这样增加了代码维护成本.
 *    3) 解决方案-使用桥接模式
 *
 *
 * @author: gdc
 * @date: 2021/3/12
 * @version 1.0
 */
public class Client {

    public static void main(String[] args){
        Phone vivoFoldedPhone = new FoldedPhone(new Vivo());
        vivoFoldedPhone.open();
        vivoFoldedPhone.call();
        vivoFoldedPhone.close();

        System.out.println("-------------------------------------------");

        Phone xiaoMiUpRightPhone = new UpRightPhone(new XiaoMi());
        xiaoMiUpRightPhone.open();
        xiaoMiUpRightPhone.call();
        xiaoMiUpRightPhone.close();

        System.out.println("-------------------------------------------");

        Phone xiaoMiFoldedPhone = new FoldedPhone(new XiaoMi());
        xiaoMiFoldedPhone.open();
        xiaoMiFoldedPhone.call();
        xiaoMiFoldedPhone.close();
    }
}
